package com.homework.phase1.module4;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

//  使用基于 tcp 协议的编程模型实现将 UserMessage 类型对象由客户端发送给服务器；
//
//  服务器接收到对象后判断用户对象信息是否为"admin" 和 "123456"， 若 是则 将 UserMessage 对象中的类型改为"success"，
//  否则将类型改为"fail"并回发给客户端，客户 端接收到服务器发来的对象后判断并给出登录成功或者失败的提示。
//
//  其中 UserMessage 类的特征有：类型(字符串类型) 和 用户对象(User 类型)。
//
//  其中 User 类的特征有：用户名、密码(字符串类型)。
//
//  如：
//
//                UserMessage tum = new UserMessage("check", new User("admin", "123456"));
public class ClientCheck {
    public static void main(String[] args) {

        Socket s = null;
        PrintStream ps = null;
        BufferedReader br = null;
        Scanner sc = null;

        try {
            s = new Socket("127.0.0.1",6666);

            sc = new Scanner(System.in);
            System.out.println("输入账号");
            String account = sc.next();
            System.out.println("输入密码");
            String password = sc.next();

            ps = new PrintStream(s.getOutputStream());
            UserMessage um = new UserMessage("check",new User(account,password));
            ps.println(um);

            br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            String str2 = br.readLine();

            String[] strArr2 = str2.split(" ");

            um.setType(strArr2[0]);
            //System.out.println(um);

            if ("success".equals(um.getType())) {

                System.out.println("登录成功");
            } else if ("fail".equals(um.getType())) {

                System.out.println("登录失败");
            }


        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != s) {
                try {
                    s.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (null != sc) {
                sc.close();
            }
            if (null != br) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (null != ps) {
                ps.close();
            }
        }

    }
}
